// 短连接返回包结构
export interface BiliResponseType<D = any> {
    code: number,
    message: string,
    data: D
}
// 短连接获取场次信息时返回的data结构
export interface RoomInfoType{
    // 场次信息
    game_info: {
        // 场次id,心跳key(心跳保持20s-60s)调用一次,超过60s无心跳自动关闭,长连停止推送消息
        game_id: string
    },

    // 长连信息
    websocket_info: {
        // 长连使用的请求json体 第三方无需关注内容,建立长连时使用即可
        auth_body: string,
        // wss 长连地址
        wss_link: string[]
    },
    
    // 主播信息
    anchor_info: {
        // 主播房间号
        room_id: number,
        // 主播昵称
        uname: string,
        // 主播头像
        uface: string,
        // 主播uid
        uid: number
    }
}

// 长连接返回包结构
export interface SocketMsgType<d = any>{
    cmd: string, 
    data: d
}

export enum SocketCmdEnum{
    // 获取弹幕信息
    LIVE_OPEN_PLATFORM_DM = "LIVE_OPEN_PLATFORM_DM", 
    // 获取礼物信息
    LIVE_OPEN_PLATFORM_SEND_GIFT = "LIVE_OPEN_PLATFORM_SEND_GIFT", 
    // 获取付费留言
    LIVE_OPEN_PLATFORM_SUPER_CHAT = "LIVE_OPEN_PLATFORM_SUPER_CHAT", 
    // 付费留言下线
    LIVE_OPEN_PLATFORM_SUPER_CHAT_DEL = "LIVE_OPEN_PLATFORM_SUPER_CHAT_DEL", 
    // 付费大航海
    LIVE_OPEN_PLATFORM_GUARD = "LIVE_OPEN_PLATFORM_GUARD", 
}

// LIVE_OPEN_PLATFORM_DM
export interface LIVE_OPEN_PLATFORM_DM_TYPE{
    // 用户昵称
    uname: string,
    // 用户UID
    uid: number,
    // 用户头像
    uface: string,
    // 弹幕发送时间秒级时间戳
    timestamp: number,
    // 弹幕接收的直播间
    room_id: number,
    // 弹幕内容
    msg: string,
    // 消息唯一id
    msg_id: string,
    // 对应房间大航海等级
    guard_level: number,
    // 该房间粉丝勋章佩戴情况
    fans_medal_wearing_status: boolean,
    // 粉丝勋章名
    fans_medal_name: string,
    // 对应房间勋章信息
    fans_medal_level: number
}

// LIVE_OPEN_PLATFORM_SEND_GIFT
export interface LIVE_OPEN_PLATFORM_SEND_GIFT_TYPE{
    // 房间号
    room_id: number, 
    // 送礼用户UID
    uid: number, 
    // 送礼用户昵称
    uname: string, 
    // 送礼用户头像
    uface: string, 
    // 道具id
    gift_id: number, 
    // 道具名
    gift_name: string, 
    // 赠送道具数量
    gift_num: number, 
    // 支付金额
    price: number, 
    // 是否是付费道具
    paid: boolean, 
    // 实际送礼人的勋章信息
    fans_medal_level: number, 
    // 粉丝勋章名
    fans_medal_name: string, 
    // 该房间粉丝勋章佩戴情况
    fans_medal_wearing_status: boolean, 
    // 大航海等级
    guard_level: number, 
    // 收礼时间秒级时间戳
    timestamp: number, 
    // 主播信息
    anchor_info: {
        // 收礼主播uid
        uid: number,  
        // 收礼主播昵称
        uname: string,  
        // 收礼主播头像
        uface: string,  
    }, 
    // 消息唯一id
    msg_id: string, 

}

// LIVE_OPEN_PLATFORM_SUPER_CHAT
export interface LIVE_OPEN_PLATFORM_SUPER_CHAT_TYPE{
    // 直播间id
    room_id: number, 
    // 购买用户UID
    uid: number, 
    // 购买的用户昵称
    uname: string, 
    // 购买用户头像
    uface: string, 
    // 留言id
    message_id: number, 
    // 留言内容
    message: string, 
    // 支付金额
    rmb: number, 
    // 赠送时间秒级
    timestamp: number, 
    // 生效开始时间
    start_time: number, 
    // 生效结束时间
    end_time: number, 
    // 对应房间大航海等级
    guard_level: number, 
    // 对应房间勋章信息
    fans_medal_level: number, 
    // 对应房间勋章名字
    fans_medal_name: string, 
    // 该房间粉丝勋章佩戴情况
    fans_medal_wearing_status: boolean, 
    // 消息唯一id
    msg_id: string, 
}

// LIVE_OPEN_PLATFORM_SUPER_CHAT_DEL
export interface LIVE_OPEN_PLATFORM_SUPER_CHAT_DEL_TYPE{
    // 直播间id
    room_id: number, 
    // 留言id
    message_ids: number[], 
    // 消息唯一id
    msg_id: string, 
}

// LIVE_OPEN_PLATFORM_GUARD
export interface LIVE_OPEN_PLATFORM_GUARD_TYPE{
  // 用户信息
  user_info: {
    // 用户uid
    uid: number,  
    // 用户昵称
    uname: string,  
    // 用户头像
    uface: string,  
  }, 
  // 大航海等级
  guard_level: number, 
  // 大航海数量
  guard_num: number, 
  // 大航海单位
  guard_unit: string, 
  // 粉丝勋章等级
  fans_medal_level: number, 
  // 粉丝勋章名
  fans_medal_name: string, 
  // 该房间粉丝勋章佩戴情况
  fans_medal_wearing_status: boolean, 
  // 房间号
  room_id: number, 
  // 消息唯一id
  msg_id: string, 
  // 上舰时间秒级时间戳
  timestamp: number, 

}

// 鉴权code码
export enum AUTH_CODE {
    CODE_4000 = "参数错误",
    CODE_4001 = "应用无效",
    CODE_4002 = "签名异常",
    CODE_4003 = "请求过期",
    CODE_4004 = "重复请求",
    CODE_4005 = "签名method异常",
    CODE_4006 = "版本异常",
    CODE_4007 = "IP白名单限制",
    CODE_4008 = "权限异常",
    CODE_4009 = "接口访问限制",
    CODE_4010 = "接口不存在",
    CODE_4011 = "Content-Type不为application/json",
    CODE_4012 = "MD5校验失败",
    CODE_4013 = "Accept不为application/json",
    CODE_5000 = "服务异常",
    CODE_5001 = "请求超时",
    CODE_5002 = "内部错误",
    CODE_5003 = "配置错误",
    CODE_5004 = "房间白名单限制",
    CODE_5005 = "房间黑名单限制",
    CODE_6000 = "验证码错误",
    CODE_6001 = "手机号码错误",
    CODE_6002 = "验证码已过期",
    CODE_6003 = "验证码频率限制",
    CODE_7000 = "不在游戏内",
    CODE_7001 = "请求冷却中",
    CODE_7002 = "该身份码正在游戏中",
    CODE_7003 = "心跳过期",
    CODE_7004 = "批量心跳超过最大值",
    CODE_7005 = "批量心跳ID重复",
    CODE_7007 = "身份码错误",
    CODE_8002 = "项目无权限访问"
}